/*
 * @Author: shenghao.xu
 * @Date: 2023-04-11 19:44:04
 * @LastEditors: shenghao.xu
 * @LastEditTime: 2023-06-05 09:08:16
 * @Description:继电器模块
 * email:545403892@qq.com
 * Copyright (c) 2023 by shenghao.xu, All Rights Reserved.
 */

#include "relay.h"

/**
 * @description: 打开继电器 1-12
 * @param {uint8_t} num
 * @return {*}
 */
void relay_open(uint8_t num)
{
    switch (num)
    {
    case 1:
        HAL_GPIO_WritePin(RELAY1_GPIO_Port, RELAY1_Pin, GPIO_PIN_SET);
        break;
    case 2:
        HAL_GPIO_WritePin(RELAY2_GPIO_Port, RELAY2_Pin, GPIO_PIN_SET);
        break;
    case 3:
        HAL_GPIO_WritePin(RELAY3_GPIO_Port, RELAY3_Pin, GPIO_PIN_SET);
        break;
    case 4:
        HAL_GPIO_WritePin(RELAY4_GPIO_Port, RELAY4_Pin, GPIO_PIN_SET);
        break;
    case 5:
        HAL_GPIO_WritePin(RELAY5_GPIO_Port, RELAY5_Pin, GPIO_PIN_SET);
        break;
    case 6:
        HAL_GPIO_WritePin(RELAY6_GPIO_Port, RELAY6_Pin, GPIO_PIN_SET);
        break;
    case 7:
        HAL_GPIO_WritePin(RELAY7_GPIO_Port, RELAY7_Pin, GPIO_PIN_SET);
        break;
    case 8:
        HAL_GPIO_WritePin(RELAY8_GPIO_Port, RELAY8_Pin, GPIO_PIN_SET);
        break;
    case 9:
        HAL_GPIO_WritePin(RELAY9_GPIO_Port, RELAY9_Pin, GPIO_PIN_SET);
        break;
    case 10:
        HAL_GPIO_WritePin(RELAY10_GPIO_Port, RELAY10_Pin, GPIO_PIN_SET);
        break;
    case 11:
        HAL_GPIO_WritePin(RELAY11_GPIO_Port, RELAY11_Pin, GPIO_PIN_SET);
        break;
    case 12:
        HAL_GPIO_WritePin(RELAY12_GPIO_Port, RELAY12_Pin, GPIO_PIN_SET);
        break;
    default:
        break;
    }
}

/**
 * @description: 关闭继电器 1-12
 * @param {uint8_t} num
 * @return {*}
 */
void relay_close(uint8_t num)
{
    switch (num)
    {
    case 1:
        HAL_GPIO_WritePin(RELAY1_GPIO_Port, RELAY1_Pin, GPIO_PIN_RESET);
        break;
    case 2:
        HAL_GPIO_WritePin(RELAY2_GPIO_Port, RELAY2_Pin, GPIO_PIN_RESET);
        break;
    case 3:
        HAL_GPIO_WritePin(RELAY3_GPIO_Port, RELAY3_Pin, GPIO_PIN_RESET);
        break;
    case 4:
        HAL_GPIO_WritePin(RELAY4_GPIO_Port, RELAY4_Pin, GPIO_PIN_RESET);
        break;
    case 5:
        HAL_GPIO_WritePin(RELAY5_GPIO_Port, RELAY5_Pin, GPIO_PIN_RESET);
        break;
    case 6:
        HAL_GPIO_WritePin(RELAY6_GPIO_Port, RELAY6_Pin, GPIO_PIN_RESET);
        break;
    case 7:
        HAL_GPIO_WritePin(RELAY7_GPIO_Port, RELAY7_Pin, GPIO_PIN_RESET);
        break;
    case 8:
        HAL_GPIO_WritePin(RELAY8_GPIO_Port, RELAY8_Pin, GPIO_PIN_RESET);
        break;
    case 9:
        HAL_GPIO_WritePin(RELAY9_GPIO_Port, RELAY9_Pin, GPIO_PIN_RESET);
        break;
    case 10:
        HAL_GPIO_WritePin(RELAY10_GPIO_Port, RELAY10_Pin, GPIO_PIN_RESET);
        break;
    case 11:
        HAL_GPIO_WritePin(RELAY11_GPIO_Port, RELAY11_Pin, GPIO_PIN_RESET);
        break;
    case 12:
        HAL_GPIO_WritePin(RELAY12_GPIO_Port, RELAY12_Pin, GPIO_PIN_RESET);
        break;
    default:
        break;
    }
}

BOOL relay_isopen(uint8_t num)
{
    BOOL ret = FALSE;
    switch (num)
    {
    case 1:
        ret = HAL_GPIO_ReadPin(RELAY1_GPIO_Port, RELAY1_Pin);
        break;
    case 2:
        ret = HAL_GPIO_ReadPin(RELAY2_GPIO_Port, RELAY2_Pin);
        break;
    case 3:
        ret = HAL_GPIO_ReadPin(RELAY3_GPIO_Port, RELAY3_Pin);
        break;
    case 4:
        ret = HAL_GPIO_ReadPin(RELAY4_GPIO_Port, RELAY4_Pin);
        break;
    case 5:
        ret = HAL_GPIO_ReadPin(RELAY5_GPIO_Port, RELAY5_Pin);
        break;
    case 6:
        ret = HAL_GPIO_ReadPin(RELAY6_GPIO_Port, RELAY6_Pin);
        break;
    case 7:
        ret = HAL_GPIO_ReadPin(RELAY7_GPIO_Port, RELAY7_Pin);
        break;
    case 8:
        ret = HAL_GPIO_ReadPin(RELAY8_GPIO_Port, RELAY8_Pin);
        break;
    case 9:
        ret = HAL_GPIO_ReadPin(RELAY9_GPIO_Port, RELAY9_Pin);
        break;
    case 10:
        ret = HAL_GPIO_ReadPin(RELAY10_GPIO_Port, RELAY10_Pin);
        break;
    case 11:
        ret = HAL_GPIO_ReadPin(RELAY11_GPIO_Port, RELAY11_Pin);
        break;
    case 12:
        ret = HAL_GPIO_ReadPin(RELAY12_GPIO_Port, RELAY12_Pin);
        break;
    default:
        break;
    }
    if (ret == GPIO_PIN_SET)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
